- 数组中删除/过滤 特定/随机 元素
delete 慎用,虽然只可以删除自己,但原型链仍会作用
是用来删除对象属性的,而不是变量,比如:var a;
。严格模式会报错数组sort可以同时按照多个属性排序
- 按照中文排序
return nameA.localeCompare(nameB,systemInfo.lang);
hybris开发 提供一段字符串以供调用(c++)
1
2
3
4
5
6
7
8
9// v0 行内:空head,有body
var str='<body style="padding:5px 0;line-height:100%;color:#fff;background:#000;font-family:\'Microsoft Yahei\';font-size:25px;text-align:center;"><span style="color:#FD6400">0</span> 天 <span style="color:#FD6400">7</span> 时 <span style="color:#FD6400">49</span> 分 <span style="color:#FD6400">23</span> 秒</body>';
// v0.1 行内: 同v0
var str='<html><body style="padding:5px 0;color:#fff;background:#000;font-family:\'Microsoft Yahei\';font-size:25px;text-align:center;"><span style="color:#FD6400">0</span> 天 <span style="color:#FD6400">7</span> 时 <span style="color:#FD6400">49</span> 分 <span style="color:#FD6400">23</span> 秒</body></html>';
// v1.0: style: .html() 文档没有head和body
var str='<body><style>html{background:#000;color:#fff;}span{color:#FD6400}</style>sdfsfs<span> clorlo </span></body>';
// v1.1 style: .html() 文档没有head和body
var str='<head><style>html{background:#000;color:#fff;}span{color:#FD6400}</style></head><body>sdfsfs<span> clorlo </span></body>';
$('html').html(str);//语句简写(三元操作或者短路运算)在赋值时需要注意
()
的添加1
2
3
4
5// 三元操作,后面的赋值不加`()`会报错:`Uncaught ReferenceError: Invalid left-hand side in assignment`
v.SubscribeDisplayName&&(sTitle = v.SubscribeDisplayName.formatForJS());
// 赋值操作中,短路运算不加`()`会影响 str的赋值:`Philip</a>`;`&&`前面的都没有计进去
str = '<a href="login/channel.php?id=' + encodeURIComponent(d[3]) + '">' + (oCdrData.FAuthorName&&oCdrData.FAuthorName.formatForHTML()) + '</a>';[1,2,3].map(parseInt)//[1, NaN, NaN]
parseInt(string, radix) radix:可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。numObj.toString([radix])
radix: 指定要用于数字到字符串的转换的基数(从2到36)。如果未指定 radix 参数,则默认值为 10。
对于 Number 对象,toString() 方法以指定的基数返回该对象的字符串表示。对象覆盖了 Object 对象上的 toString() 方法,它不是继承的 Object.prototype.toString()。
进行数字到字符串的转换时,建议用小括号将要转换的目标括起来,防止出错。(8).toString(2) //1000
Object.prototype.toString.call(null);//"[object Null]"
生成一个随机数
(Math.random()*Math.pow(2,64)).toString(36)
Math.random().toString(36).substring(2)
Math.random: 这个随机数的小数长度不固定,但是经过测试(一亿次),最小出现过4位,最大出现过24位。如果运气不是特别特别差的话,基本上是不会出现0的情况。小数期望长度16位。
Number对象拥有toString方法,该方法可以将Number对象转化成字符串。
三十六进制实际上就是(0-9,a-z),十个数字加26个英文字母。
将随机数转变成三十六进制,实际就相当于变成了数字+字母的随机字符串
我们所要做的就是取小数点后面的字符串("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4)
想要获得更长的字符串怎么办?也很简单啦,只要用Math.floor代替<<取整就可以了。
JSON.parse(s)
的时候 字符串中不可以带\r,\n,\t
需要换成\\r,\\n,或者''
.
但是如果是经过 JSON.stringify()过的可以解析通过var s={name:'sdf\r\nsadf'} ss=JSON.stringify(s);var r=JSON.parse(ss)
js unicode编码
1
2
3
4
5'a'.charCodeAt(0); /*97*/
'a'.charCodeAt().toString(16); /*61*/
'\u0061' /* 'a' */
'a'.length /* 1 */
'中'.length /* 1 */后台直接返回一个json对象处理:
xhr和fetch经处理后返回的都是字符串类型,需要解析。JSON.parse()并不能成功解析
xhr:jsonO=eval("("+data+")")
fetch:res.text().then(data=>{jsonO=eval("("+data+")")})
js预解析不过的时候,页面会报停,包括函数内部出错。
- 本地页面(file协议)请求数据时的问题:xhr和fetch,没有试过axios
不知为什么访问本地服务器api就可以
1. 向本地的服务器-192.168.1.81发起请求都ok
2. 向公网发出的请求:
xhr:捕获到error,但是network中可以看到数据;status:200;type:xhr
fetch-mode:cors:捕获到error,network中可以看不到数据;status:200;type:fetch浏览器报错:Failed to load https://www.hello.com/api?... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
fetch-mode:no-cors: 没有捕获到error,network中没有数据;status:200;type:fetch浏览器报错: 和上面一样;加了一行: If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
成功的回调中body:null;bodyUsed:false; ok:false;status:0;type:opaque;url:"" 即使header中做了相关设置
- jquery深拷贝
classInfoData = $.extend(true,[],classInfo);
- js keycode
keyCode 实际键值
48到57 0到9
65到90 a到z(A到Z)
112到135 F1到F24
8 BackSpace(退格)
9 Tab
13 Enter(回车)
20 Caps_Lock(大写锁定)
32 Space(空格键)
37 Left(左箭头)
38 Up(上箭头)
39 Right(右箭头)
40 Down(下箭头)
- 使用“at方法”读取数组的尾元素
1
2
3const array = [ 1, 2, 3, 4, 5 ]
const lastItem = array.at(-1) // 5
const item1 = array.at(0) // 1